totaldays(year::I, month::I=one(I), day::I=one(I)) where I<:Integer = Base.Dates.totaldays(year, month, day)

daysinmonth(year::I, month::I) where I<:Integer = Base.Dates.daysinmonth(year, month)
isleapyear(year::I) where I<:Integer = Base.Dates.isleapyear(year)
daysinyear(year::I) where I<:Integer = 365 + isleapyear(year)

yearmonth(clock::T) where T<:SimpleClock = Base.Dates.yearmonth(Date(clock))
yearmonthday(clock::T) where T<:SimpleClock = Base.Dates.yearmonthday(Date(clock))

daysofweekinmonth(clock::T) where T<:SimpleClock = Base.Dates.daysofweekinmonth(Date(clock))

dayabbr(clock::T) where T<:SimpleClock = Base.Dates.dayabbr(Date(clock))
dayname(clock::T) where T<:SimpleClock = Base.Dates.dayname(Date(clock))
monthabbr(clock::T) where T<:SimpleClock = Base.Dates.monthabbr(Date(clock))
monthname(clock::T) where T<:SimpleClock = Base.Dates.monthname(Date(clock))

dayofweek(clock::T) where T<:SimpleClock = Base.Dates.dayofweek(Date(clock))
dayofmonth(clock::T) where T<:SimpleClock = Base.Dates.dayofmonth(Date(clock))
dayofquarter(clock::T) where T<:SimpleClock = Base.Dates.dayofquarter(Date(clock))
dayofyear(clock::T) where T<:SimpleClock = Base.Dates.dayofyear(Date(clock))

firstdayofweek(clock::T) where T<:SimpleClock = Base.Dates.firstdayofweek(Date(clock))
firstdayofmonth(clock::T) where T<:SimpleClock = Base.Dates.firstdayofmonth(Date(clock))
firstdayofquarter(clock::T) where T<:SimpleClock = Base.Dates.firstdayofquarter(Date(clock))
firstdayofyear(clock::T) where T<:SimpleClock = Base.Dates.firstdayofyear(Date(clock))

lastdayofweek(clock::T) where T<:SimpleClock = Base.Dates.lastdayofweek(Date(clock))
lastdayofmonth(clock::T) where T<:SimpleClock = Base.Dates.lastdayofmonth(Date(clock))
lastdayofquarter(clock::T) where T<:SimpleClock = Base.Dates.lastdayofquarter(Date(clock))
lastdayofyear(clock::T) where T<:SimpleClock = Base.Dates.lastdayofyear(Date(clock))
